1. Technical Field
The present invention relates generally to an improved data processing system and in particular to an improved method and system for visual programming within a data processing system. Specifically, the presently claimed invention is directed towards an improved method and system for visual programming to create software for use in a data processing system.
2. Description of the Related Art
The development of application and system software for data processing systems has traditionally been a time consuming task. The field of software engineering has attempted to overcome the limitations of traditional techniques by proposing new, more efficient software development models. Object oriented programming has emerged as a promising technology that will allow rapid development, implementation and customization of objects. Each new object has certain data attributes and processes or methods that operate on that data. Data is said to be "encapsulated" by an object and can only be modified by the object methods, which are invoked by sending a message to an object identifying the method and supplying any needed arguments.
Object oriented systems have two important properties in addition to encapsulation. "Inheritance" is the ability to derive a new object from an existing object and inherit all properties, including methods and data structure, from the existing object. The new object may have certain unique features which are supplied as overrides or modifications to the existing class. For example, a new subclass needs to specify only the functions and data that distinguish that class from the existing more general class.
The ability to override an existing method description enables polymorphism, the ability to have a single message to an object be processed in different ways depending on the object itself.
Inheritance and polymorphism create a powerful structure for implementing new software systems. The software developer does not have to develop each piece of a system, he or she need only specify the unique features of the system.
The power of object oriented systems is realized through the development of system "frameworks." A framework is a collection of base classes that can be used by a system implementor to create a final systems product. The framework is defined and developed to work together as a system. Conceptually, the framework is much like a set of standard hardware components used by computer hardware builders. Each of the components has certain defined functions and interfaces and the engineer assembles these components according to a particular design to create a unique hardware system.
One object oriented programming system is the System Object Model (SOM). More information on SOM can be found in SOMobjects Developer ToolKit Users Guide, version 2.0, June 1993, available from International Business Machines Corporation.
Visual programming techniques allow users and programmers to create programming solutions to problems more quickly than programming in traditional languages such as FORTRAN, C, PASCAL, COBOL or BASIC. Visual programming environments provide a Graphic User Interface ("GUI") as an interface between the user and the data processing system. Within the GUI, visual programming may be accomplished by, for example, dragging and dropping user interface components from a pallet of components displayed to a user. The program logic is typically specified in one of three ways, by writing in a traditional programming language, by writing in a more user-friendly scripting language, such as REXX or by visually connecting components together within a visual programming environment.
The use of traditional programming or scripting languages still present users with a requirement of learning a new language. Even though scripting languages are more simple than traditional programming languages, both are still significant inhibitors for non-programmers.
Specification of program logic by visually connecting components together using a GUI is more appropriate for non-programmers. Such a visual programming environment can be more productive than coding for experienced programmers in some cases. Current implementations, however, have trouble scaling to large applications. Visual programming techniques typically used work well for a small number of connections but tend to become unusable in realistic size applications. The main cause of this scaling problem involves the specification of parameters associated with method invocations.
A method invocation, like function calls in a non-object oriented language, typically requires one or more parameters. Each parameter in turn may be supplied with yet another method invocation on the same or a different object. When the parameter resolution is itself specified by drawing visual connections in a GUI between objects, the number of connections may quickly become overwhelming with individual connections becoming indiscernible. Therefore, it would be advantageous to have a method and system to provide a visual programming technique to allow users to visually specify parameters, but in a manner that supports productive development of realistic large scale applications.